/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.flowumi.controladores;

import com.flowumi.dto.Usuario;
import com.flowumi.exceptions.UsuarioNoConectadoException;
import com.flowumi.facade.SessionFacade;
import java.io.Serializable;
import java.util.logging.Level;
import javax.ejb.EJB;
import javax.enterprise.context.SessionScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;
import org.apache.log4j.Logger;

/**
 *
 * @author ideacentre
 */
@Named(value = "sessionFlowumiUtil")
@SessionScoped
public class SessionFlowumiUtilBean implements Serializable {

    private static final Logger LOGGER =
            Logger.getLogger(SessionFlowumiUtilBean.class);
    @EJB
    SessionFacade sessionFacade;
    private Usuario usuario;//Almacena el objeto usuario de la session
    private String CodigoAdminUsuarioDetalle;
    private long codigoAdminCursoDetalle;
    /**
     * Creates a new instance of SessionFlowumiUtil
     */
    public SessionFlowumiUtilBean() {
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public String getCodigoAdminUsuarioDetalle() {
        return CodigoAdminUsuarioDetalle;
    }

    public void setCodigoAdminUsuarioDetalle(String CodigoAdminUsuarioDetalle) {
        this.CodigoAdminUsuarioDetalle = CodigoAdminUsuarioDetalle;
    }

    public String Conectar() {
        try {
            LOGGER.info("Conectando");
            usuario = sessionFacade.iniciarSession(usuario);
            LOGGER.info("Conectado");
            if (usuario.getIdRoll().getIdRoll() == 1) {
                LOGGER.info("Administrador - cargando vista principal admin");
                return "AdminConectado";
            } else {
                if (usuario.getIdRoll().getIdRoll() == 2) {
                    LOGGER.info("Profesor - cargando vista principal profesor");
                    return "ProfesorConectado";
                } else {
                    LOGGER.info("Estudiante - cargando vista principal estudiante");
                    return "EstudianteConectado";
                }
            }
        } catch (UsuarioNoConectadoException ex) {
            LOGGER.error(ex.getMessage());
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Usuario no conectado", ex.getMessage()));
        }
        return "";
    }

    public long getCodigoAdminCursoDetalle() {
        return codigoAdminCursoDetalle;
    }

    public void setCodigoAdminCursoDetalle(long codigoAdminCursoDetalle) {
        this.codigoAdminCursoDetalle = codigoAdminCursoDetalle;
    }
    
}
